<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A> 
</CENTER>






<HR>

<H3>fix wall/piston command 
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID wall/piston face ... keyword value ... 
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command 

<LI>wall/piston = style name of this fix command 

<LI>face = <I>zlo</I> 

<LI>zero or more keyword/value pairs may be appended 

<LI>keyword = <I>pos</I> or <I>vel</I> or <I>ramp</I> or <I>units</I>  

<PRE>  <I>pos</I> args = z
    z = z coordinate at which the piston begins (distance units)
  <I>vel</I> args = vz
    vz = final velocity of the piston (velocity units)
  <I>ramp</I> = use a linear velocity ramp from 0 to vz
  <I>temp</I> args = target damp seed extent
    target = target velocity for region immediately ahead of the piston
    damp = damping paramter (time units)
    seed = random number seed for langevin kicks
    extent = extent of thermostated region (distance units)
  <I>units</I> value = <I>lattice</I> or <I>box</I>
    <I>lattice</I> = the wall position is defined in lattice units
    <I>box</I> = the wall position is defined in simulation box units 
</PRE>

</UL>
<P><B>Examples:</B>
</P>
<PRE>fix xwalls all wall/piston zlo
fix walls all wall/piston zlo pos 1.0 0.0 0.0 vel 0.0 0.0 10.0 units box
fix top all wall/piston zlo vel 0.0 0.0 10.0 ramp 
</PRE>
<P><B>Description:</B>
</P>
<P>Bound the simulation with a moving wall which reflect particles in the
specified group and drive the system with an effective infinite-mass
piston capable of driving shock waves.
</P>
<P>A momentum mirror technique is used, which means that if an atom (or
the wall) moves such that an atom is outside the wall on a timestep by
a distance delta (e.g. due to <A HREF = "fix_nve.html">fix nve</A>), then it is put
back inside the face by the same delta, and the velocity relative to
the moving wall is flipped in z.  For instance, a stationary particle
hit with a piston wall with velocity vz, will end the timestep with a
velocity of 2*vz.
</P>
<P>Currently the <I>face</I> keyword can only be <I>zlo</I>.  This creates a piston
moving in the positive z direction.  Particles with z coordinate less
than the wall position are reflected to a z coordinate greater than
the wall position.  If the piston velocity is vpz and the particle
velocity before reflection is vzi, the particle velocity after
reflection is -vzi + 2*vpz.
</P>
<P>The initial position of the wall can be specified by the <I>pos</I> keyword.
</P>
<P>The final velocity of the wall can be specified by the <I>vel</I> keyword
</P>
<P>The <I>ramp</I> keyword will cause the wall/piston to adjust the velocity
linearly from zero velocity to <I>vel</I> over the course of the run. If
the <I>ramp</I> keyword is omitted then the wall/piston moves at a constant
velocity defined by <I>vel</I>.
</P>
<P>The <I>temp</I> keyword will cause the region immediately in front of the
wall/piston to be thermostated with a Langevin thermostat.  This
region moves with the piston.  The damping and kicking are measured in
the reference frame of the piston.  So, a temperature of zero would
mean all particles were moving at exactly the speed of the
wall/piston.
</P>
<P>The <I>units</I> keyword determines the meaning of the distance units used
to define a wall position, but only when a numeric constant is used.
</P>
<P>A <I>box</I> value selects standard distance units as defined by the
<A HREF = "units.html">units</A> command, e.g. Angstroms for units = real or metal.
A <I>lattice</I> value means the distance units are in lattice spacings.
The <A HREF = "lattice.html">lattice</A> command must have been previously used to
define the lattice spacings.
</P>
<HR>

<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>
</P>
<P>No information about this fix is written to <A HREF = "restart.html">binary restart
files</A>.  None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix.  No global or per-atom quantities are stored
by this fix for access by various <A HREF = "Section_howto.html#howoto_15">output
commands</A>.  No parameter of this fix can
be used with the <I>start/stop</I> keywords of the <A HREF = "run.html">run</A> command.
This fix is not invoked during <A HREF = "minimize.html">energy minimization</A>.
</P>
<P><B>Restrictions:</B>
</P>
<P>This fix style is part of the SHOCK package.  It is only enabled if
LAMMPS was built with that package. See the <A HREF = "Section_start.html#start_3">Making
LAMMPS</A> section for more info.
</P>
<P>The face that has the wall/piston must be boundary type 's' 
(shrink-wrapped). The opposing face can be 
any boundary type other than periodic.
</P>
<P>A wall/piston should not be used with rigid bodies such as those
defined by a "fix rigid" command.  This is because the wall/piston
displaces atoms directly rather than exerting a force on them.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_wall.html">fix wall/reflect</A> command, <A HREF = "fix_append_atoms.html">fix
append/atoms</A> command
</P>
<P><B>Default:</B>
</P>
<P>The keyword defaults are pos = 0, vel = 0, units = lattice.
</P>
</HTML>
